package io;

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;

/**
 * 实现简易记事本
 * 要求:
 * 程序启动后,将用户在控制台上输入的每一行字符串都写入文件note.txt中.
 * 当用户单独输入"exit"时程序退出.
 */

public class Text03 {
    public static void main(String[] args) throws FileNotFoundException {
         /*
            PrintWriter->BufferedWriter->OutputStreamWriter->FileOutputStream
            PW:负责按行写出字符串
            BW:块写文本数据加速(内部有一个默认8192长度的字符数组)
            OSW:将写出的字符转字节
            FOS:将字节写入到文件中
         */
        Scanner  scanner=new Scanner(System.in);
        FileOutputStream  fos=new FileOutputStream("note.txt");
        OutputStreamWriter osw=new OutputStreamWriter(fos, StandardCharsets.UTF_8);
        BufferedWriter bw=new BufferedWriter(osw);
          /*
            PrintWriter如果第一个参数为流，那么就支持再传入一个参数为boolean值。
            如果这个值为true则是打开了自动行刷新功能。
         */
        PrintWriter pw=new PrintWriter(bw,true);
        System.out.println("开始输入，exit退出");

        while (true){
            String ss=scanner.nextLine();
            if ("exit".equalsIgnoreCase(ss)){
                break;
            }
            /*
                当PW开启了自动行刷新后，每当我们调用一次println方法后就会自动flush.
             */
            pw.println(ss);
            pw.flush();
        }
        pw.close();

        System.out.println("程序退出");

    }
}
